本次主題是以colab的環境進行學習的,在本篇文章中,我將講解影像辨識的基礎技能在接下來的文章中這些技能將多次出現,先讀過這些語法再繼續去看後面的文章會比較能快速上手喔。依照進度每個禮拜都會記錄不同的影像辨識方法,基本順序會從:
在我們上一篇文章中我們已經把模型準備好了,接下來我們就回到colab裡面進行語意分割吧。老樣子先把雲端硬碟掛載到colab上。
雲端硬碟掛載:
from google.colab import drive
drive.mount('/content/drive')
將雲端硬碟掛載好之後,我們先載入上次訓練的模型。
模型載入及預測:
model = keras.models.load_model("/content/drive/MyDrive/fit/model_1.h5")
#model.fit(train_gen,validation_data=val_gen, epochs=epochs)
model.summary()
val_gen = data_read(batch_size, img_size, val_input_img_paths,val_target_img_paths)
num_classes = 21
batch_size = 8
img_size = (160, 160)
def run_test(imagefile):
image_np = cv.imread("/content/drive/MyDrive/fit/test/"+imagefile)
image_np = cv.resize(image_np[:,:,::-1],
(160,
160))
image_np = np.expand_dims(image_np,axis=0)
val_preds = model.predict(image_np)
mask = np.argmax(val_preds[0], axis=-1)
mask = np.expand_dims(mask, axis=-1)
img = PIL.ImageOps.autocontrast(keras.preprocessing.image.array_to_img(mask))
img = img.resize((540, 540))
img.save("/content/drive/MyDrive/fit/test/mask_"+imagefile)
img2 = cv.imread("/content/drive/MyDrive/fit/test/mask_"+imagefile)
img2 = cv.resize(img2, (1920, 1080),cv.INTER_CUBIC)
img2 = np.around(img2)
print(*np.array(img2))
plt.imshow(img2,cmap="gray")
plt.show()
# cv.imwrite("/content/drive/MyDrive/fit/test/"+imagefile,img)
run_test("images_car.jpg")
print('Done.')
原始圖片:
實際預測結果:
fit的資料夾共享:
https://drive.google.com/drive/folders/1_I7ze_S5Sg3-ACmFOB2nXhudWex0hd1L?usp=sharing
預測結果感覺不佳主要原因是因為訓練次數不夠,可以自行增加訓練次數,效果應該會更好。
如果實際預測上遇到甚麼問題或是error的話歡迎丟到留言區討論喔!
文章主題一覽:
粗體字為額外更新的文章。